home *** CD-ROM | disk | FTP | other *** search
/ Softdisk Supreme / Softdisk Supreme.iso / pc / DSK Files / 0-49 / SD008b.dsk / DRAW.SHAPES.bas < prev    next >
BASIC Source File  |  2003-06-12  |  8KB  |  288 lines

  1. 100 MD% = 0
  2. 110  HIMEM: 16383
  3. 120 AD = 24577
  4. 130 PK$ = "2060806050"
  5. 140  FOR I = 1 TO 10
  6. 150  POKE 767 +I, VAL( MID$ (PK$,I,1))
  7. 160  NEXT I
  8. 170 LI$ = "IKMJWSZA CR!*"
  9. 180 ER$ = "INCORRECT RESPONSE,TRY AGAIN."
  10. 190 AU = 96:AL = 1
  11. 200  DIM MD(9)
  12. 210 ST$ = "**"
  13. 220 SL$ = " SELECT:"
  14. 230  HOME 
  15. 240  FOR N = 2 TO 22  STEP 20
  16. 250  VTAB N
  17. 260  FOR I = 1 TO 40
  18. 270  PRINT ST$;
  19. 280  NEXT 
  20. 290  NEXT 
  21. 310  VTAB 5
  22. 325  INVERSE 
  23. 330  PRINT SL$
  24. 335  NORMAL 
  25. 340  PRINT ST$; TAB( 10);"(1) FREE"
  26. 345  PRINT ST$; TAB( 10);"(2) GRID"
  27. 350  GET A$
  28. 355  IF A$ < >"1"  AND A$ < >"2"  THEN  GOTO 350
  29. 360 FG$ = A$
  30. 365  IF A$ = "1"  THEN  GOTO 460
  31. 370  VTAB 13
  32. 375  FLASH 
  33. 380  PRINT SL$
  34. 385  NORMAL 
  35. 390  FOR I = 1 TO 6
  36. 395  PRINT ST$; TAB( 10);"(";I;") ";2 *I +3;"X";2 *I +3;" GRID"
  37. 400  NEXT 
  38. 405  GET A$
  39. 410  IF  VAL(A$) <1  OR  VAL(A$) >6  THEN  GOTO 405
  40. 415 GS$ = A$
  41. 420 GS = ( VAL(GS$)) *2 +3
  42. 425 IC =  INT(130/GS)
  43. 430  FOR N = 13 TO 19
  44. 435  VTAB 32 -N
  45. 440  FOR I = 1 TO 40
  46. 445  PRINT " ";
  47. 450  NEXT 
  48. 455  NEXT N
  49. 460  VTAB 5
  50. 470  PRINT SL$
  51. 480  VTAB 9
  52. 880  INVERSE 
  53. 885  PRINT SL$
  54. 890  NORMAL 
  55. 895  PRINT ST$; TAB( 10);"(1) NEW SHAPE TABLE"
  56. 900  PRINT ST$; TAB( 10);"(2) LOADED TABLE (,A24577)
  57. 905  GET A$
  58. 910  IF A$ < >"1"  AND A$ < >"2"  THEN  GOTO 905
  59. 915 TA$ = A$
  60. 920  IF TA$ = "2"  THEN  GOTO 970
  61. 925  FOR I = 0 TO 99
  62. 930  POKE AD +I,0
  63. 935  NEXT 
  64. 940 PO = AD +4
  65. 945 PT = PO
  66. 950  POKE AD +2,4
  67. 955 NS = 0
  68. 960  POKE AD,1
  69. 965  GOTO 1540
  70. 970 NS =  PEEK(AD)
  71. 975  IF NS < >255  THEN  GOTO 1200
  72. 980  FOR I = 1 TO 24
  73. 985  PRINT  TAB( 16);"TABLE FULL"
  74. 990  NEXT 
  75. 995  FOR I = 0 TO 2000: NEXT 
  76. 1000  RUN 
  77. 1005  POKE AD,NS +1
  78. 1010 PO = ( PEEK(AD +2 *NS)) +( PEEK(AD +2 *NS +1)) *256 +AD
  79. 1015 S =  PEEK(PO)
  80. 1020  IF S < >0  AND S < >255 GOTO 1050
  81. 1025  IF S = 0 GOTO 1045
  82. 1030  FOR I = 1 TO 10
  83. 1035 S =  PEEK(PO +I)
  84. 1040  IF S < >255 GOTO 1050
  85. 1045  FOR I = 0 TO 1000: POKE PO +I,0: NEXT : GOTO 1060
  86. 1050 PO = PO +1
  87. 1055  GOTO 1015
  88. 1060 PO = PO +3
  89. 1065 PT = PO
  90. 1070 M =  PEEK(AD +2) +( PEEK(AD +3)) *256 +AD
  91. 1075 P = 3
  92. 1080 I =  PEEK(PT -P)
  93. 1085  POKE PT -P +2,I
  94. 1090  IF M = PT -P  THEN  GOTO 1105
  95. 1095 P = P +1
  96. 1100  GOTO 1080
  97. 1105  FOR I = 0 TO 1
  98. 1110  POKE M +I,0
  99. 1115  NEXT 
  100. 1120  FOR I = 2 TO 2 *NS  STEP 2
  101. 1125 M =  PEEK(AD +I)
  102. 1130 M = M +2
  103. 1135  IF M >255  THEN M = M -256:N =  PEEK(AD +I +1):N = N +1: POKE AD +I +1,N
  104. 1140  POKE AD +I,M
  105. 1145  NEXT 
  106. 1150 N = PT -AD
  107. 1155 I =  INT(N/256)
  108. 1160 M = N -I *256
  109. 1165  POKE AD +2 *(NS +1),M
  110. 1170  POKE AD +2 *(NS +1) +1,I
  111. 1175  GOTO 1720
  112. 1200  VTAB 9
  113. 1201  PRINT SL$
  114. 1205  VTAB 13
  115. 1210  INVERSE 
  116. 1220  PRINT SL$
  117. 1230  NORMAL 
  118. 1240  PRINT ST$; TAB( 10);"(1) AUTO REVIEW"
  119. 1250  PRINT ST$; TAB( 10);"(2) MANUAL REVIEW"
  120. 1260  PRINT ST$; TAB( 10);"(3) NO REVIEW"
  121. 1270  GET A$
  122. 1280  IF  VAL(A$) <1  OR  VAL(A$) >3  THEN  GOTO 1270
  123. 1290 TR$ = A$
  124. 1300  IF TR$ = "3"  THEN  GOTO 1540
  125. 1310  IF TR$ = "1"  THEN  GOTO 1410
  126. 1320  HOME 
  127. 1325  VTAB 8
  128. 1330  PRINT "PRESS"; TAB( 20);"TO"
  129. 1340  PRINT ST$;ST$; TAB( 20);ST$;ST$
  130. 1350  PRINT : PRINT "SPACE BAR"; TAB( 20);"START REVIEW"
  131. 1355  PRINT  TAB( 20);"     OR"
  132. 1360  PRINT  TAB( 20);"   ADVANCE"
  133. 1370  PRINT : PRINT 
  134. 1400  PRINT : PRINT "ANY OTHER KEY"; TAB( 20);"STOP REVIEW"
  135. 1410  HCOLOR= 3: ROT= 0: POKE 232,AL: POKE 233,AU
  136. 1420  FOR I = 1 TO NS +1
  137. 1430  IF TR$ = "1"  THEN  GOTO 1470
  138. 1440  GET A$
  139. 1450  IF A$ < >" "  AND A$ < >"/"  THEN  GOTO 1540
  140. 1460  IF A$ = "/"  THEN MD(MD%) = I:MD% = MD% +1: IF MD% = 10  THEN MD% = 0
  141. 1470  IF I = NS +1  THEN  GOTO 1540
  142. 1480  HGR2 
  143. 1490  SCALE= 1: DRAW I AT 70,95
  144. 1500  SCALE= 2: DRAW I AT 140,95
  145. 1510  SCALE= 3: DRAW I AT 210,95
  146. 1520  IF TR$ = "1"  THEN  FOR M = 0 TO 250: NEXT M
  147. 1530  NEXT I
  148. 1540  TEXT 
  149. 1550  HOME 
  150. 1560  PRINT : PRINT "THIS STARTS THE WORKING PORTION OF THE  PROGRAM. ACCEPTABLE COMMANDS ARE LISTED BELOW."
  151. 1570 DR$ = " DRAW AND MOVE ":LF$ = "LEFT":RT$ = "RIGHT":DW$ = "DOWN":ST$ = "***":DN$ = " DO NOT"
  152. 1580  PRINT 
  153. 1590  PRINT : PRINT "  ";DR$;"  ";DN$;DR$
  154. 1600  PRINT : PRINT  TAB( 10);"A  ";ST$; TAB( 18);LF$; TAB( 25);ST$; TAB( 30);"J"
  155. 1610  PRINT  TAB( 10);"W  ";ST$; TAB( 19);"UP"; TAB( 25);ST$; TAB( 30);"I"
  156. 1620  PRINT  TAB( 10);"S  ";ST$; TAB( 18);RT$; TAB( 25);ST$; TAB( 30);"K"
  157. 1630  PRINT  TAB( 10);"Z  ";ST$; TAB( 18);DW$; TAB( 25);ST$; TAB( 30);"M"
  158. 1640  PRINT : PRINT "SPACE  ";ST$;"  CANCEL LAST MOVE"
  159. 1650  PRINT "!      ";ST$;"  END SHAPE CONSTRUCTION"
  160. 1660  PRINT "R      ";ST$;"  ROTATE SHAPE 90 DEGREES"
  161. 1670  PRINT "C      ";ST$;"  CHANGE SHAPE COLOR"
  162. 1680  PRINT : PRINT 
  163. 1690  PRINT  TAB( 10);"PRESS SPACE TO BEGIN"
  164. 1700  GET A$
  165. 1710  IF A$ < >" " GOTO 1700
  166. 1711  HOME 
  167. 1712  FOR I = 1 TO 24  STEP 3: VTAB I
  168. 1713  PRINT "SHAPE TABLE BEING READIED ***** STAND-BY"
  169. 1714  NEXT 
  170. 1719  IF TA$ = "2"  THEN  GOTO 1005
  171. 1720  HGR2 : POKE 232,0: POKE 233,3
  172. 1730  IF FG$ = "1" GOTO 1880
  173. 1740  HCOLOR= 3
  174. 1750  SCALE= IC *GS: ROT= 0
  175. 1760  FOR I = 0 TO GS
  176. 1770  FOR N = 0 TO 1
  177. 1780  DRAW 1 AT (I *IC) +N,26
  178. 1790  NEXT N
  179. 1800  DRAW 2 AT 0,(I *IC) +26
  180. 1810  NEXT I
  181. 1820 HS =  INT(GS *IC/2):VS = HS +26:HN = HS:VN = VS
  182. 1830 SC = 6
  183. 1840 S = 3
  184. 1850  GOSUB 2130
  185. 1860 S = 1
  186. 1870  IF VA = 9  THEN  GOTO 2530
  187. 1880  GET A$
  188. 1890 PV =  PEEK(PT)
  189. 1900  FOR F = 1 TO  LEN(LI$):V$ =  MID$ (LI$,F,1): IF V$ = A$  THEN VA = F -1: GOTO 1925
  190. 1910  NEXT F
  191. 1920  GOTO 1880
  192. 1925  IF VA = 12  THEN MI = 1
  193. 1930  IF VA = 0  OR VA = 4  THEN VN = VS -IC
  194. 1940  IF VA = 1  OR VA = 5  THEN HN = HS +IC
  195. 1950  IF VA = 2  OR VA = 6  THEN VN = VS +IC
  196. 1960  IF VA = 3  OR VA = 7  THEN HN = HS -IC
  197. 1962  IF VA <4  AND PV = 0  AND MI = 1  THEN HS = HN:VS = VN:S = 3: GOSUB 2130
  198. 1963  IF MI = 1  AND VA >3  AND VA <12  THEN MI = 0
  199. 1964  IF MI = 1  THEN S = 1: GOTO 1880
  200. 1970  IF FG$ = "1"  THEN  GOTO 1990
  201. 1980  IF VN <26  OR VN >IC *GS +26  OR HN <0  OR HN >IC *GS  THEN VN = VS:HN = HS: GOTO 1880
  202. 1990  IF VA >7  THEN  GOTO 2310
  203. 2000  IF VA = 0  THEN PT = PT +1: POKE PT,200: GOTO 2050
  204. 2010  IF PV >63  THEN PT = PT +1: POKE PT,VA: GOTO 2050
  205. 2020  IF PV >8  AND VA >3  THEN PT = PT +1: POKE PT,VA: GOTO 2050
  206. 2030  IF PV >8  THEN  POKE PT,PV +64 *VA: GOTO 2050
  207. 2040  POKE PT,PV +8 *VA
  208. 2050  IF FG$ = "1"  THEN  GOTO 2650
  209. 2060  GOSUB 2130
  210. 2070 VS = VN:HS = HN
  211. 2080  IF VA = 8  THEN  GOSUB 2130
  212. 2090 S = 3
  213. 2100  GOSUB 2130
  214. 2110 S = 1
  215. 2120  GOTO 2530
  216. 2130 I = 0
  217. 2140 V2 = I *IC +26
  218. 2150  IF V2 >VS  THEN V1 = (I -1) *IC +26: GOTO 2170
  219. 2160 I = I +1: GOTO 2140
  220. 2170 I = 0
  221. 2180 H2 = I *IC
  222. 2190  IF H2 >HS  THEN H1 = (I -1) *IC: GOTO 2210
  223. 2200 I = I +1: GOTO 2180
  224. 2210  HCOLOR= 3
  225. 2220  IF VA <4  THEN  HCOLOR= 0
  226. 2230  IF VA = 8  THEN  HCOLOR= 0
  227. 2240  IF S = 3  THEN  HCOLOR= SC
  228. 2250  SCALE=  INT(H2) - INT(H1) -2: POKE 232,0: POKE 233,3
  229. 2260  ROT= 0
  230. 2270  FOR I = V1 +1 TO V2 -1  STEP S
  231. 2280  DRAW 2 AT H1 +2,I
  232. 2290  NEXT I
  233. 2300  RETURN 
  234. 2310 PV =  PEEK(PT)
  235. 2320  IF VA = 8  AND PV = 0  THEN  GOTO 1880
  236. 2330  IF VA = 8  AND FG$ = "2"  THEN EI = 1:Z = SC:SC = 0: HCOLOR= 0: GOTO 2540
  237. 2340  IF VA = 8  THEN EI = 0:SC = Z
  238. 2350  IF VA = 8  THEN  GOTO 2370
  239. 2360  GOTO 2690
  240. 2370 PV =  PEEK(PT)
  241. 2380  IF PV = 200  THEN VE = 0: POKE PT,0:PT = PT -1: GOTO 2450
  242. 2390  IF PV >7  THEN VE =  INT(PV/8) *8
  243. 2400  IF PV >63  THEN VE =  INT(PV/64) *64
  244. 2410  IF PV <8  THEN VE = PV
  245. 2420 PV = PV -VE
  246. 2430  POKE PT,PV
  247. 2440  IF PV = 0  THEN PT = PT -1
  248. 2450  IF PT <PO  THEN PT = PO
  249. 2460  IF FG$ = "1"  THEN  HGR2 : GOTO 2650
  250. 2470  IF VE >7  THEN VE = VE/8: GOTO 2470
  251. 2480  IF VE = 0  OR VE = 4  THEN VN = VS +IC
  252. 2490  IF VE = 1  OR VE = 5  THEN HN = HS -IC
  253. 2500  IF VE = 2  OR VE = 6  THEN VN = VS -IC
  254. 2510  IF VE = 3  OR VE = 7  THEN HN = HS +IC
  255. 2520  GOTO 2060
  256. 2530  HCOLOR= 3
  257. 2540  ROT= RO
  258. 2550  POKE 232,AL: POKE 233,AU
  259. 2560  SCALE= 1: DRAW NS +1 AT 210,29
  260. 2570  SCALE= 5: DRAW NS +1 AT 203,115
  261. 2580  HCOLOR= SC
  262. 2590  SCALE= 2
  263. 2600  DRAW NS +1 AT 170,30
  264. 2610  DRAW NS +1 AT 249,30
  265. 2620  IF EI = 1  THEN  GOTO 2340
  266. 2630  IF RI = 1  THEN  GOTO 2770
  267. 2640  GOTO 1880
  268. 2650  SCALE= 1: ROT= RO: HCOLOR= 3
  269. 2660  POKE 232,AL: POKE 233,AU
  270. 2670  DRAW NS +1 AT 139,96
  271. 2680  GOTO 1880
  272. 2690  IF VA < >9  THEN  GOTO 2740
  273. 2700  IF SC <2  OR SC = 5  THEN SC = SC +1: GOTO 1840
  274. 2710  IF SC = 2  THEN SC = 5
  275. 2720  IF SC >5  THEN SC = 1
  276. 2730  GOTO 1840
  277. 2740  IF VA = 11  THEN  GOTO 2790
  278. 2750  HCOLOR= 0:SA = SC:SC = 0:RI = 1
  279. 2760  GOTO 2540
  280. 2770 SC = SA:RO = RO +16:RI = 0: IF RO = 64  THEN RO = 0
  281. 2780  GOTO 2530
  282. 2790  HOME : TEXT 
  283. 2791  POKE PT +1,0:PT = PT +1
  284. 2800  PRINT "WANT TO BUILD ANOTHER SHAPE? (Y/N)": GET A$
  285. 2810  IF A$ < >"Y"  AND A$ < >"N"  THEN  GOTO 2800
  286. 2820  IF A$ = "Y"  THEN  RUN 
  287. 2824  HOME : VTAB 10
  288. 2830  PRINT "TO SAVE SHAPE TABLE USE:": PRINT "BSAVE (SHAPE TABLE NAME),A";AD;",L";PT -AD +5: END